package com.suke.czx.modules.goods.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.suke.czx.common.utils.R;
import com.suke.czx.modules.goods.entity.Goods;
import com.suke.czx.modules.goods.entity.GoodsSearchBo;

import java.util.List;

/**
 * 应用模块名称: 物品
 * 代码描述: 物品业务层接口
 * copyright: AUZAR ALL RIGHTS RESERVED
 * company: AUZAR
 *
 * @author: 颜米晨
 * @date: 2021/09/03 15:18:56
 */
public interface GoodsService extends IService<Goods> {

    /**
     * 查询物品列表
     * @param goodsSearchBo 查询BO
     * @return 物品数据集
     */
    R selectGoodsList(GoodsSearchBo goodsSearchBo);

    /**
     * 保存物品
     * @param goods 物品
     * @return VO
     */
    R saveGoods(Goods goods);

    /**
     * 更新物品
     * @param goods 物品
     * @return VO
     */
    R updateGoods(Goods goods);

    /**
     * 删除物品
     * @param goodsId 物品编码
     * @param userId 操作者编码
     * @return VO
     */
    R updateDelGoods(Long goodsId, Long userId);

    /**
     * 同步项目合同清单
     * @param projectId 项目编码
     * @param userId 操作者编码
     * @return VO
     */
    R sync(Long projectId, Long userId);

    /**
     * 撤销同步项目合同清单
     * @param projectId 项目编码
     * @param userId 操作者编码
     * @return VO
     */
    R delSync(Long projectId, Long userId);

    /**
     * 批量交付物品
     * @param goodsList 项目编码
     * @param userId 操作者编码
     * @return VO
     */
    R batchDeliver(List<Goods> goodsList, Long userId);

}
